

package fr.eisti.ing1.projetgsiKlelifaRazavet.Graphe;
import fr.eisti.ing1.projetgsiKlelifaRazavet.Objets.Personne;

/**
 * La classe AreteValuee gérant les liens d'amitié entre les personnes
 * @author Klelifa Sarah, Razavet Maël
 * @version 1.0
 */
public class AreteValuee <T extends Comparable<T>> implements Comparable<AreteValuee<T>>{
        //Déclaration des attributs
	private Personne sommet1;
	private Personne sommet2;
	private int evaluation; //evaluation de l'arete

        /**
         *Constructeur d'une arete value
         * @param s1 sommet1
         * @param s2 sommet2
         * @param val evaluation de l'arete
         */
	public AreteValuee(Personne s1,Personne s2,int val){
		this.sommet1 = s1;
		this.sommet2 = s2;
		this.evaluation = val;
	}

        /**
         *Constructeur d'une arete sans valeur
         * @param s1 sommet1
         * @param s2 sommet2
         */
	public AreteValuee(Personne s1,Personne s2){
		this.sommet1 = s1;
		this.sommet2 = s2;
                this.evaluation = -1;
	}

        /**
         * permet de donner une valeur à une arête
         * @param evaluation : la note du lien
         */
        public void setEvaluation(int evaluation){
            this.evaluation = evaluation;
        }

         /**
	 * compare l'arete courante à une autre
	 * @param ar à comparer avec l'arete courante
	 * @return un nombre négatif, nul ou positif si, respectivement,
	 * l'arete courante est plus petite, égale ou plus grande que l'arete
	 * en paramètre
	 */
	@Override
	public int compareTo(AreteValuee<T> ar) {
		// TODO Auto-generated method stub
                Integer objetCourant = this.evaluation;
                Integer autre = ar.getEvaluation();
		return objetCourant.compareTo(autre);
	}

        /**
	 * représentation textuelle d'une arete 
	 * @return la représentation textuelle
	 */
        @Override
	public String toString(){
            String res;
            res = "Source: "+this.sommet1+" est ami avec "+this.sommet2;
            if(this.evaluation!=-1){
                res = res + " evaluation = "+this.evaluation;
            }
            return res;
	}

	/**
         * récupère la evaluation de l'arete
         * @return evaluation evaluation de l'arete
         */
	public int getEvaluation() {
		return evaluation;
	}

 
        /**
         * récupère le sommet1 de l'arete
         * @return sommet1 le sommet1 de l'arete
         */
	public Personne getSommet1() {
		return sommet1;
	}


        /**
         * récupère le sommet2 de l'arete
         * @return sommet1 le sommet2 de l'arete
         */
	public Personne getSommet2() {
		return sommet2;
	}
	
}
